package edu.asselvi.seguros.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import edu.asselvi.seguros.db.DbUtils;
import edu.asselvi.seguros.exception.ESegurosErros;
import edu.asselvi.seguros.exception.SegurosException;
import edu.asselvi.seguros.pojo.Corretor;


public class CorretorDao extends DbUtils {

	Connection conn = null;

	public CorretorDao(Connection conn) {
		this.conn = conn;
	}
	
	
	public Corretor insert(Corretor corretor) throws SegurosException {

		String sql = "INSERT INTO CORRETORES (ID_CORRETOR, NOME, SEXO, NASCIMENTO, TELEFONE, EMAIL, CPF, RG, CRC, FK_ID_ENDERECO) VALUES (?,?,?,?,?,?,?,?,?,?)";
		PreparedStatement p = null;
		
		try {
			corretor.setId_corretor(getNextId("SEQ_CORRETORES", conn));
			
			p = conn.prepareStatement(sql);
			int cont = 1;
			
			p.setInt(cont++, corretor.getId_corretor());
			p.setString(cont++, corretor.getNome());
			p.setString(cont++, corretor.getSexo());
			p.setDate(cont++, utilDatetoSQLDate(corretor.getNascimento()));
			p.setString(cont++, corretor.getTelefone());
			p.setString(cont++, corretor.getEmail());
			p.setString(cont++, corretor.getCpf());
			p.setString(cont++, corretor.getRg());
			p.setString(cont++, corretor.getCrc());
			p.setInt(cont++, corretor.getFk_id_endereco());

			p.executeUpdate();
			
		} catch (SQLException e) {
			
			throw new SegurosException(ESegurosErros.ERRO_INSERCAO);
			
		} finally {
			close(p);
		}
		return corretor;
	}


	public List<Corretor> list() throws SQLException, SegurosException {
		String sql = "SELECT * FROM CORRETORES";

		List<Corretor> lista = null;
		PreparedStatement p = null;
		java.sql.ResultSet rs = null;

		try {
			lista = new ArrayList<Corretor>();
			p = conn.prepareStatement(sql);
			rs = p.executeQuery();

			while (rs.next()) {
				Corretor corretor= new Corretor();

				corretor.setId_corretor(rs.getInt("ID_CORRETOR"));

				corretor.setNome(rs.getString("NOME"));
				corretor.setSexo(rs.getString("SEXO"));
				corretor.setNascimento(rs.getDate("NASCIMENTO"));
				corretor.setTelefone(rs.getString("TELEFONE"));
				corretor.setEmail(rs.getString("EMAIL"));
				corretor.setCpf(rs.getString("CPF"));
				corretor.setRg(rs.getString("RG"));
				corretor.setCrc(rs.getString("CRC"));
				corretor.setFk_id_endereco(rs.getInt("FK_ID_ENDERECO"));

				lista.add(corretor);

			}
			if (lista.isEmpty()){
				throw new SegurosException(ESegurosErros.ERRO_ZERO_REGISTROS);
			} 

		} finally {
			close(rs);
			close(p);
		}

		return lista;		
	}



}
